Draft
Conversation
For each schema with bitfield points that have level annotations, emit a static factory method that returns a BitfieldChangeDetector configured with the appropriate property getters and GetLevel calls. The runtime change detection logic lives in the consuming project.
The source generator now emits a change detection factory that references BitfieldChangeDetector<T>, which lives in the consuming project. The test project needs a minimal stub so the generated code compiles.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Inline change detection for schemas with leveled bitfields
Summary
need for any external change detection types — the generated code is fully self-contained.
when changes are detected.
for consumers that don't need change detection.
implement equivalent detection using the same schema information.
Usage
Pass a callback when constructing the generated client:
Without a callback, the client works exactly as before — no behavioral change:
What the generator emits
For a group WarningsErrorsEmergencies containing StringErrors1 and StringErrors2 (both bitfields with levels):
Change detection also works for bitfield points inside repeating groups — the callback is passed through to each nested class instance.